package model

// User 用户模型

type User struct {
	UserID      int64  `json:"userId" gorm:"column:user_id;primary_key;auto_increment"`
	Username    string `json:"username" gorm:"column:username;not null;default:''"`
	Nickname    string `json:"nickname" gorm:"column:nickname;not null;default:''"`
	Password    string `json:"-" gorm:"column:password;not null;default:''"`
	Avatar      string `json:"avatar" gorm:"column:avatar;not null;default:'https://ccdc-association.oss-cn-hangzhou.aliyuncs.com/user-avatar.png'"`
	Signature   string `json:"signature" gorm:"column:signature;not null;default:''"`
	FollowCount int64  `json:"followCount" gorm:"column:follow_count;not null;default:0"` // 关注人数
	BaseModel
}

func (User) TableName() string {
	return "user"
}

type LoginRequest struct {
	Username string `json:"username,omitempty" valid:"required~用户名不能为空"`
	Password string `json:"password" valid:"required~密码不能为空"`
}

type RegisterRequest struct {
	Username        string `form:"username" json:"username" valid:"required~用户名不能为空"`
	Password        string `form:"password" json:"password" valid:"required~密码不能为空,length(6|18)~密码需要6-18位"`
	PasswordConfirm string `form:"passwordConfirm" json:"passwordConfirm" valid:"required~密码确认不能为空"`
}

type ResetRequest struct {
	Username    string `form:"username" json:"username" valid:"required~用户名不能为空"`
	Password    string `form:"password" json:"password" valid:"required~密码不能为空,length(6|18)~密码需要6-18位"`
	NewPassword string `form:"newPassword" json:"newPassword" valid:"required~新密码不能为空"`
}

type UpdateUserInfoRequest struct {
	Username  string `json:"username" valid:"required~用户名不能为空"`
	Avatar    string `json:"avatar" valid:"required~头像不能为空"`
	Nickname  string `json:"nickname" valid:"required~昵称不能为空"`
	Signature string `json:"signature"`
}

type Author struct {
	UserId   int64  `json:"userId"`
	Nickname string `json:"nickname"`
	IsFollow bool   `json:"isFollow"`
	Username string `json:"username"`
	Avatar   string `json:"avatar"`
}

type AuthorVo struct {
	FollowCount   int64  `json:"followCount"`   // 关注数
	FollowerCount int64  `json:"followerCount"` // 粉丝数
	WorkerCount   int64  `json:"workerCount"`   // 作品数量
	LikeCount     int64  `json:"likeCount"`     // 点赞数
	CollectCount  int64  `json:"collectCount"`  // 收藏数
	UserId        int64  `json:"userId"`
	Nickname      string `json:"nickname"`
	IsFollow      bool   `json:"isFollow"`
	Username      string `json:"username"`
	Avatar        string `json:"avatar"`
	Signature     string `json:"signature"`
}
type UserRequest struct {
	UserID int64 `json:"userId" valid:"required~id不能为空"`
}

type UserAction struct {
	VideoId int64   `json:"videoId" valid:"required~id不能为空"`
	Ratio   float64 `json:"ratio" valid:"required~ratio不能为空"`
}

type UserMessage struct {
	Data     []User `json:"data"`
	Database string `json:"database"`
	Es       int64  `json:"es"`
	Gtid     string `json:"gtid"`
	Id       int64  `json:"id"`
	IsDdl    bool   `json:"isDdl"`
	Table    string `json:"table"`
	Ts       int64  `json:"ts"`
	Type     string `json:"type"`
}
